package view;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import controller.SistemaTelefonia;

public class ModificarUsuario extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;
	private JLabel jLabel2;
	private JTextField dniUsuario;

	private JLabel jLabel;
	
	private JTextField dni = new JTextField();
	private JTextField nombre = new JTextField();
	private JTextField apellido = new JTextField();
	private JTextField domicilio = new JTextField();
	private JTextField telefono = new JTextField();
	private JTextField email = new JTextField();
	
	private String[] labels = {"DNI", "Nombre", "Apellido", "Domicilio", "Telefono", "Email"};
	private JTextField[] textFields = {dni, nombre, apellido, domicilio, telefono, email};
	
	private JButton buscar;
	private JPanel panelBusqueda;
	private JPanel panelEdicion;
	private SistemaTelefonia sistema;
	
	public ModificarUsuario (){}
	
	public ModificarUsuario(SistemaTelefonia s) {
		super();
		initGUI();
		sistema = s;
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				panelBusqueda = new JPanel();
				panelBusqueda.setLayout(new GridLayout(1,3));
				panelBusqueda.setBounds(1, 50, 300, 30);
				
				jLabel2 = new JLabel();
				jLabel2.setText("DNI:");
				jLabel2.setBounds(21, 91, 93, 28);
				panelBusqueda.add(jLabel2);

				dniUsuario = new JTextField();
				dniUsuario.setBounds(119, 91, 300, 28);
				panelBusqueda.add(dniUsuario);

				buscar = new JButton();
				buscar.setBounds(238, 140, 93, 28);
				buscar.setText("Buscar");
				panelBusqueda.add(buscar);

				getContentPane().add(panelBusqueda);
				panelBusqueda.setVisible(true);
				
				buscar.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent evt) 
					{
						try {
							boolean validacionOK = validarInputs();
							if(validacionOK) {
								UsuarioView uv = sistema.buscarUsuario(dniUsuario.getText().trim());
								
								if(uv!=null) {
									panelBusqueda.setVisible(false);
									panelEdicion.setVisible(true);
									dni.setText(uv.getDni());
									nombre.setText(uv.getNombre());
									apellido.setText(uv.getApellido());
									domicilio.setText(uv.getDomicilio());
									telefono.setText(uv.getTelefono());
									email.setText(uv.getEmail());
								} else {
									JOptionPane.showMessageDialog(getContentPane(), "No se ha encontrado ningun usuario con ese DNI");
								}
							}
							
						} catch(Exception e) {
							e.printStackTrace();
							JOptionPane.showMessageDialog(getContentPane(), e.getMessage());
							dniUsuario.setText("");
						}
					}
				});
			}
			
			{
				panelEdicion = new JPanel();
				panelEdicion.setBounds(1, 1, 400, 200);
				panelEdicion.setVisible(false);
				panelEdicion.setLayout(new GridLayout(10,2));
				getContentPane().add(panelEdicion);
				generateInputs(panelEdicion);
			}
			pack();
			setTitle("Modificar usuario");
			setSize(400, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	
	private void generateInputs(JPanel panelEdicion) {
		
		int y = 42;
		for (int i = 0; i < labels.length; i++) {
			JLabel label = generateLabel(panelEdicion,labels[i], 21, y);
			JTextField input =generateInput(panelEdicion,textFields[i],51, y);
			panelEdicion.add(label);
			panelEdicion.add(input);
			y+=10;
		}
		
		JButton modificar = new JButton();
		modificar.setBounds(238, 500, 73, 28);
		modificar.setText("Modificar");
		
		modificar.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt) 
			{
				try {
					sistema.modificarUsuario(dniUsuario.getText(), nombre.getText(), apellido.getText(), domicilio.getText(), telefono.getText(), email.getText());
					JOptionPane.showMessageDialog(getContentPane(), "El usuario Nro " + dniUsuario.getText() + 
																		" se ha modificado con exito.");
					
					sistema.reloadData();
					
					setVisible(false);
				} catch(Exception e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(getContentPane(), e.getMessage());
					dniUsuario.setText("");
				}
			}
		});
	
		panelEdicion.add(modificar);
		
	}
	
	private boolean validarInputs(){
		boolean ok = true;
		if (dniUsuario.getText().trim().length()==0){
			ok = false;
			JOptionPane.showMessageDialog(getContentPane(), "Por favor ingrese el DNI de Usuario");
		}
		return ok;
	}
	
	private JTextField generateInput(JPanel panelEdicion, JTextField textField, int x, int y) {
		textField.setBounds(x, y, 210, 28);	
		return textField;
	}

	private JLabel generateLabel(JPanel panelEdicion, String label, int x, int y) {
		jLabel = new JLabel();
		jLabel.setText(label);
		jLabel.setBounds(x, y, 83, 28);
		return jLabel;
	}

		

}


